package com.xyhuo.leetcode.november;

import java.util.LinkedList;
import java.util.List;

/**
 * 设计前中后队列
 * https://leetcode.cn/problems/design-front-middle-back-queue/
 *
 * @time 2023/11/28
 */
public class FrontMiddleBackQueue {

    private List<Integer> list = new LinkedList<>();

    public FrontMiddleBackQueue() {

    }

    public void pushFront(int val) {
        list.add(0, val);
    }

    public void pushMiddle(int val) {
        int len = list.size();
        list.add((len) / 2, val);
    }

    public void pushBack(int val) {
        list.add(val);
    }

    public int popFront() {
        if (list.isEmpty()) {
            return -1;
        }
        return list.remove(0);
    }

    public int popMiddle() {
        if (list.isEmpty()) {
            return -1;
        }
        int len = list.size();
        return list.remove((len - 1) / 2);
    }

    public int popBack() {
        if (list.isEmpty()) {
            return -1;
        }
        int len = list.size();
        return list.remove(len - 1);
    }
//
//    public static void main(String[] args) {
//        FrontMiddleBackQueue fm = new FrontMiddleBackQueue();
//        fm.pushFront(1);
//        fm.pushBack(2);
//        fm.pushMiddle(3);
//        fm.pushMiddle(4);
//
//        fm.popFront();
//        fm.popMiddle();
//        fm.popMiddle();
//        fm.popBack();
//        fm.popFront();
//    }
}
